The present invention relates generally to systems and methods for managing and distributing electronic data in a computing system, and more particularly to systems and methods for associating data properties and rules with various domain objects within a program or computing system.
Many applications that operate within a computing environment may be based on or constructed from certain self-contained program components such as portlets or domain objects. While increasing the visibility of business data and operations through such components offers value, an even greater value can be obtained when such domain objects or instances of a component communicate with one another. Among other things, this allows components to communicate data to each other while retaining the abstraction desirable for the component to promote code reuse. To create such an environment, domain objects need be able to pass data to one another, react to changes in their data and respond to events from domain objects. A domain object, which may be referred to hereinafter as a “component” may be a portion of software that may have some data and business logic that serves a specific purpose.
Communication and interaction with other domain objects or component property instances may occur through defined interfaces such as messaging, event handling, or other service operations. Certain computing environments may support a “trigger-workflow” model to facilitate this process. In such an environment, domain objects may pass information to one another using a property broker system, which enables domain objects to publish their data types and properties and to declare actions or services to be performed based on the data values published by other domain objects.
A component that provides a property may be referred to a “source component,” and properties published by that domain object source components may be called “OUT properties.” The component that receives a property may be called the “target component” and the properties that are received published by the target may be referred to as “IN properties.” With cooperative domain objects, a target object can perform an action based on the property or data it receives from other related objects. OUT properties from a source component can be wired to IN properties from a target component. If the OUT property value changes in a source component, this change is propagated to target component's IN property.
Each property published by a component typically includes certain meta-information such as name, namespace, type and direction. The name may specify the property name, whereas the namespace provides uniqueness of the property name in a large system to prevent name collisions. The type may specify the semantics of the property, and direction may specify whether it is an IN property, an OUT property or both.
Components may programmatically be “wired” together through a component wiring tool to implement a persistent connection among data within the objects. A data change in the source component automatically triggers a change on the target components without requiring user intervention. In addition, such an association is typically not hard coded in the component or application system logic so such associations need not be known in development cycle of the components. This allows different application developers to associate properties of one component with properties of other components such that dependant or related information may be changed or updated based on the pre-designated association without requiring additional user actions.